package com.bsfcs.rag.utils;

import org.springframework.core.io.ByteArrayResource;
import org.springframework.core.io.InputStreamResource;
import org.springframework.core.io.Resource;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

public class MultipartFileUtils {

    // 阈值，超过这个大小就用 InputStreamResource（单位：字节）
    private static final long MEMORY_THRESHOLD = 5 * 1024 * 1024; // 5 MB

    public static Resource toResource(MultipartFile file) throws IOException {
        if (file.getSize() <= MEMORY_THRESHOLD) {
            // 小文件，用 ByteArrayResource
            return new ByteArrayResource(file.getBytes()) {
                @Override
                public String getFilename() {
                    return file.getOriginalFilename();
                }
            };
        } else {
            // 大文件，用 InputStreamResource
            return new InputStreamResource(file.getInputStream()) {
                @Override
                public String getFilename() {
                    return file.getOriginalFilename();
                }
            };
        }
    }
}

